007.自动化 Web 浏览器操作

Selenium 是一个用于自动化 Web 浏览器操作的强大工具,广泛应用于 Web 应用程序测试、网页数据抓取和任务自动化等场景。

Selenium 需要一个 WebDriver 来与浏览器进行交互。

pip install selenium
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 设置正确的驱动路径
service = ChromeService(executable_path="/RUNOOB/Downloads/chromedriver-mac-arm64/chromedriver") 
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 打开一个网站
driver.get("https://cn.bing.com")

# 获取页面标题
print(driver.title)

# 关闭浏览器
driver.quit()

基本用法

初始化 WebDriver

from selenium import webdriver

# 使用 Chrome 浏览器
driver = webdriver.Chrome()
# 或者使用 Firefox 浏览器
# driver = webdriver.Firefox()
# 或者使用 Edge 浏览器
# driver = webdriver.Edge()

打开网页

driver.get("https://www.baidu.com")

查找页面元素

# 通过 ID 查找元素
search_box = driver.find_element("id", "kw")

# 通过类名查找元素
search_button = driver.find_element("class name", "s_ipt")

# 通过标签名查找元素
links = driver.find_elements("tag name", "a")

模拟用户操作

# 在搜索框中输入文本
search_box.send_keys("Selenium Python")

# 点击搜索按钮
search_button.click()

获取元素属性和文本

# 获取元素的文本
element_text = search_box.text

# 获取元素的属性值
element_attribute = search_box.get_attribute("placeholder")

等待

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 显式等待
element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "kw"))
)

# 隐式等待
driver.implicitly_wait(10)

关闭浏览器

driver.quit()

selenium 常用方法

方法 说明 示例代码
webdriver.Chrome() 初始化 Chrome 浏览器实例。 driver = webdriver.Chrome()
driver.get(url) 访问指定的 URL 地址。 driver.get("https://example.com")
driver.find_element(By, value) 查找第一个匹配的元素。 element = driver.find_element(By.ID, "id")
driver.find_elements(By, value) 查找所有匹配的元素。 elements = driver.find_elements(By.CLASS_NAME, "class")
element.click() 点击元素。 element.click()
element.send_keys(value) 向输入框中发送键盘输入。 element.send_keys("text")
element.text 获取元素的文本内容。 text = element.text
driver.back() 浏览器后退。 driver.back()
driver.forward() 浏览器前进。 driver.forward()
driver.refresh() 刷新当前页面。 driver.refresh()
driver.execute_script(script, *args) 执行 JavaScript 脚本。 driver.execute_script("alert('Hello!')")
driver.switch_to.frame(frame_reference) 切换到指定的 iframe。 driver.switch_to.frame("frame_id")
driver.switch_to.default_content() 切换回主文档。 driver.switch_to.default_content()
driver.quit() 关闭浏览器并退出驱动。 driver.quit()
driver.close() 关闭当前窗口。 driver.close()